import request from '@/utils/request'

/**
 * 获取商品列表
 * @param params 查询参数
 */
export function getProductList(params) {
  return request({
    url: '/products',
    method: 'get',
    params
  })
}

/**
 * 获取商品详情
 * @param id 商品ID
 */
export function getProductDetail(id) {
  return request({
    url: `/products/${id}`,
    method: 'get'
  })
}

/**
 * 获取热门商品列表
 * @param params 查询参数
 */
export function getHotProducts(params = {}) {
  return request({
    url: '/products/hot',
    method: 'get',
    params
  })
}

/**
 * 获取新品商品列表
 * @param params 查询参数
 */
export function getNewProducts(params = {}) {
  return request({
    url: '/products/new',
    method: 'get',
    params
  })
}

/**
 * 搜索商品
 * @param params 搜索参数
 */
export function searchProducts(params) {
  return request({
    url: '/products/search',
    method: 'get',
    params
  })
}

/**
 * 根据分类获取商品列表
 * @param categoryId 分类ID
 * @param params 查询参数
 */
export function getProductsByCategory(categoryId, params = {}) {
  return request({
    url: `/products/category/${categoryId}`,
    method: 'get',
    params
  })
}

/**
 * 创建商品（管理员）
 * @param productData 商品数据
 */
export function createProduct(productData) {
  return request({
    url: '/products',
    method: 'post',
    data: productData
  })
}

/**
 * 更新商品（管理员）
 * @param productId 商品ID
 * @param productData 商品数据
 */
export function updateProduct(productId, productData) {
  return request({
    url: `/products/${productId}`,
    method: 'put',
    data: productData
  })
}

/**
 * 删除商品（管理员）
 * @param productId 商品ID
 */
export function deleteProduct(productId) {
  return request({
    url: `/products/${productId}`,
    method: 'delete'
  })
}

/**
 * 上架商品（管理员）
 * @param productId 商品ID
 */
export function putOnShelf(productId) {
  return request({
    url: `/products/${productId}/put-on-shelf`,
    method: 'put'
  })
}

/**
 * 下架商品（管理员）
 * @param productId 商品ID
 */
export function pullOffShelf(productId) {
  return request({
    url: `/products/${productId}/pull-off-shelf`,
    method: 'put'
  })
}

/**
 * 设置推荐商品（管理员）
 * @param productId 商品ID
 * @param featured 是否推荐
 */
export function setFeatured(productId, featured) {
  return request({
    url: `/products/${productId}/featured`,
    method: 'put',
    params: { featured }
  })
}

/**
 * 更新商品库存（管理员）
 * @param productId 商品ID
 * @param quantity 库存数量
 */
export function updateStock(productId, quantity) {
  return request({
    url: `/products/${productId}/stock`,
    method: 'put',
    params: { quantity }
  })
}

/**
 * 获取推荐商品列表
 * @param params 查询参数
 */
export function getFeaturedProducts(params = {}) {
  return request({
    url: '/products/featured',
    method: 'get',
    params
  })
}

/**
 * 上传商品图片（管理员）
 * @param file 图片文件
 */
export function uploadProductImage(file) {
  const formData = new FormData()
  formData.append('file', file)
  return request({
    url: '/products/upload-image',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 批量上传商品图片（管理员）
 * @param files 图片文件数组
 */
export function uploadProductImages(files) {
  const formData = new FormData()
  files.forEach(file => {
    formData.append('files', file)
  })
  return request({
    url: '/products/upload-images',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}